]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
userMenu: Make the user menu insensitive in the lock screen
authorJasper St. Pierre <jstpierre@mecheye.net>
Sat, 1 Sep 2012 21:44:46 +0000 (18:44 -0300)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 4 Sep 2012 21:42:44 +0000 (18:42 -0300)
And show a lock icon as well.

https://bugzilla.gnome.org/show_bug.cgi?id=683156

js/ui/panelMenu.js
js/ui/sessionMode.js
js/ui/userMenu.js

index 28b9851a55913af099f69791aa0989e27686a540..0476375f5743d404bfc25cf3a71a0abc9bbe53f7 100644 (file)
@@ -115,6 +115,12 @@ const Button = new Lang.Class({
         this.setName(nameText);
     },
 
+    setSensitive: function(sensitive) {
+        this.actor.reactive = sensitive;
+        this.actor.can_focus = sensitive;
+        this.actor.track_hover = sensitive;
+    },
+
     setName: function(text) {
         if (text != null) {
             // This is the easiest way to provide a accessible name to
index 572864312a8b2ee985c103e24a9dd52ec4fb9168..62c6da62e5ab91f2f4a7ce1b9475485706e51162 100644 (file)
@@ -36,6 +36,7 @@ const _modes = {
         hasRunDialog: false,
         hasWorkspaces: false,
         hasWindows: false,
+        isLocked: true,
         components: ['networkAgent', 'polkitAgent', 'telepathyClient'],
         panel: {
             left: ['userMenu'],
@@ -68,6 +69,7 @@ const _modes = {
               hasWorkspaces: true,
               hasWindows: true,
               createUnlockDialog: Main.createSessionUnlockDialog,
+              isLocked: false,
               components: ['networkAgent', 'polkitAgent', 'telepathyClient',
                            'keyring', 'recorder', 'autorunManager', 'automountManager'],
               panel: {
index 49b22261ca168945971988d7a666b55a8c357d52..bb3e1a5d92d93fe930f81d84b9ed2ff024bca734 100644 (file)
@@ -505,6 +505,8 @@ const UserMenuButton = new Lang.Class({
                                        style_class: 'popup-menu-icon' });
         this._pendingIcon = new St.Icon({ icon_name: 'user-status-pending-symbolic',
                                           style_class: 'popup-menu-icon' });
+        this._lockedIcon = new St.Icon({ icon_name: 'changes-prevent-symbolic',
+                                         style_class: 'popup-menu-icon' });
 
         this._accountMgr.connect('most-available-presence-changed',
                                   Lang.bind(this, this._updatePresenceIcon));
@@ -578,6 +580,9 @@ const UserMenuButton = new Lang.Class({
         let allowSettings = Main.sessionMode.allowSettings;
         this._statusChooser.setSensitive(allowSettings);
         this._systemSettings.visible = allowSettings;
+
+        this.setSensitive(!Main.sessionMode.isLocked);
+        this._updatePresenceIcon();
     },
 
     _onDestroy: function() {
@@ -661,7 +666,9 @@ const UserMenuButton = new Lang.Class({
     },
 
     _updatePresenceIcon: function(accountMgr, presence, status, message) {
-        if (presence == Tp.ConnectionPresenceType.AVAILABLE)
+        if (Main.sessionMode.isLocked)
+            this._iconBox.child = this._lockedIcon;
+        else if (presence == Tp.ConnectionPresenceType.AVAILABLE)
             this._iconBox.child = this._availableIcon;
         else if (presence == Tp.ConnectionPresenceType.BUSY)
             this._iconBox.child = this._busyIcon;